// 题目14
// 2020-12月-16 01:12 Views(3565) 德科机试一星题6
// 声明
// 题目收集自互联网，解题为博主个人提供，仅供参考。
// 若您在阅读过程中发现错误，敬请不吝赐教。
// 博主联系方式： amos@amoscloud.com
// 题目描述：
// 单词接龙的规则是:
// 可用于接龙的单词,首字母必须要与前一个单词的尾字母相同；
// 当存在多个首字母相同的单词时，取长度最长的单词；
// 如果长度也相等，则取字典序最小的单词；
// 已经参与接龙的单词不能重复使用；
// 现给定一组全部由小写字母组成的单词数组，
// 并指定其中一个单词为起始单词，进行单词接龙，
// 请输出最长的单词串。
// 单词串是单词拼接而成的，中间没有空格。

// 单词个数 1 < N < 20
// 单个单词的长度 1 ~ 30

// 输入描述
// 输入第一行为一个非负整数
// 表示起始单词在数组中的索引k
// 0 <= k < N
// 输入的第二行为非负整数N
// 接下来的N行分别表示单词数组中的单词

// 输出描述
// 输出一个字符串表示最终拼接的单词串

// 0
// 6
// word
// dd
// da
// dc
// dword
// d

function getMaxStr(k, n, arr) {
    let startWord = arr[k];
    let ans = startWord;
    let flag = true;
    arr.splice(k, 1);
    arr = arr.sort((a, b) => {
        if (a.length === b.length) {
            return a.localeCompare(b)
        } else {
            return b.length - a.length;
        }
    });

    while (flag) {
        let find = arr.findIndex((e) => {
            return e[0] === ans[ans.length - 1];
        });
        
        if (find > -1) {
            ans += arr[find];
            arr.splice(find, 1)
        }else {
            flag=false;
        }
    }
    console.log(ans)
}
getMaxStr(0,6,['word','dd','da','dc','dword','d']);
getMaxStr(4,6,['word','dd','da','dc','dword','d']);